Электронная
библиотека
RU En Ua
Моделирование процесса развертывания
цилиндрических и конических поверхностей
с использованием языка MAXScript

Карабчевский В.В, Пашинская А.В.
Донецкий национальный технический университет
Наукові праці Днецького національного технічного університету. Серія "Інформатика, кібернетика та обчислювальна тхніка" (ІКОТ - 2008). Випуск 9 (132) - Донецьк: ДонНТУ. - 2008. - 316 с., 163-167 с.

Abstract


Karabchevsky V., Pashinskaya A. Modeling of unrolling process for cylindrical and conical surfaces with using MAXscript language. The methods and tools of modeling of unrolling process for cylindrical and conical surfaces with using MAXscript language was considered, the results of its development are described.


Введение


Наглядное моделирование процессов решения задач начертательной геометрии является основным условием повышения качества преподавания графических дисциплин, поэтому в состав компьютерных учебников по таким дисциплинам включаются соответствующие статические или динамические модели.

Разработка средств генерации таких моделей, позволяющих расширить круг решаемых задач и снизить трудоемкость построения моделей, является важной научно-практической задачей.


Анализ публикаций


В [1] приведен обзор компьютерных средств обучения начертательной геометрии и средств их разработки. Можно заметить, что наглядное исследование условий развертываемости линейчатых поверхностей и представление процессов получения разверток в существующих учебниках не реализованы. Причины состоят в том, что такие системы, как AutoCAD, Компас, 3D Studio MAX и др., разработанные с применением легких и среднего веса графических ядер, не представляют пользователю базовых средств, позволяющих автоматически получать развертки поверхностей. Такие процессы, как построение сечений поверхностей плоскостью, точек пересечения поверхности и прямой и линий взаимного пересечения поверхностей моделируются более успешно [2], т.к. вышеупомянутые системы частично автоматизируют решение таких задач. Упомянутые в [1] методы не ориентированы на автоматизированное получение динамических иллюстраций для различных условий: генерация объектов и решение подзадач проводится в средах того или иного графического редактора в режиме графического диалога.


Постановка задачи


Возникает задача построения разверток для развертываемых поверхностей с возможностью управления параметрами моделирования. Для решения поставленной задачи выбран пакет 3Ds Max, позволяющий не только произвести необходимые геометрические преобразования, а и обеспечить легкое и интуитивно понятное общение с разработчиком. Встроенный язык MAXScript пакета 3Ds Max облегчает автоматизацию при построении развертки, так как расчет промежуточных и конечных параметров модели и необходимые операции модифицирования производятся без участия пользователя, задающего только исходные объекты. Анимирование модели, наглядно демонстрирующей процесс построения развертки, производится автоматически, что сокращает необходимое для построения завершенной модели время.

Следует так же отметить, что полученные результаты моделирования должны быть использованы в обучающих целях, поэтому особенную роль играет наглядность построения развертки и доступность понимания самого процесса построения.


Развертывание прямого кругового конуса и кругового цилиндра


Наиболее удобно для изучения условий развертываемости использовать два частных случая развертываемых поверхностей – конус и цилиндр, как наиболее упрощенные варианты конических и цилиндрических поверхностей, для создания которых можно применить стандартные объекты 3D Studio MAX.

При построении моделей частных случаев был использован следующий подход: сначала с помощью стандартных примитивов Cone и Cylinder создаются конус и цилиндр соответственно, далее работа производится с их параметрами и модификаторами.

Создание стандартных примитивов осуществляется командами MAXScript. Для этого реализуется минимальный необходимый диалог с пользователем (рис. 1). Он состоит из нескольких элементов: заголовок свитка диалога (создаем во вкладке utility), окна ввода (в соответствующем свитке), кнопки управления (позволяют запустить скрипт или закрыть весь свиток). Для цилиндра и конуса вводятся следующие параметры:

  • Height – высота;
  • Radius – радиус (для конуса- радиус основания);
  • Sides (начальное количество сторон).

Рисунок 1 – Диалог с пользователем

Далее эти параметры запоминаются в соответствующие переменные и используются для построения модели. В случае если пользователь не хочет задавать свои параметры ввода, используются параметры по умолчанию, которые отображаются в свитке в момент его открытия. Так же заданы нижние и верхние пределы параметров (range), их тип (type).

Количество сторон задается для наглядности при демонстрации справедливости условия развертываемости. Так как, по определению, образующие должны быть параллельными или пересекаться в одной точке, ребра граней наиболее точно отображают это утверждение. В дальнейшем, изменяя параметр Sides, мы можем аппроксимировать ломаную поверхность цилиндра и конуса гладкой поверхностью (рис. 2).

Рисунок 2 – Изменение количества граней и применение сглаживания

Следует, однако, уточнить, что для полноты эффекта используется параметр сглаживания (smooth). По-умолчанию, при создании объекта сглаживание включено (smooth=true), поэтому необходимо принудительно его отключить (smooth=false). В режиме анимации будут изменяться следующие параметры: высота (Height=0), радиус (Radius= Height), количество сторон (Sides), сглаживание (smooth).

Рассматривая полученную динамическую модель, обучаемый может убедиться, что развертываемый многогранник при увеличении количества сторон приближается к аппроксимируемой поверхности.

Для моделирования построения развертки цилиндра применен следующий метод.

На этапах ввода параметров, построения по ним модели с помощью примитива cylinder, изменения количества граней и применения smooth для демонстрации аппроксимации ломаной поверхности гладкой действия аналогичны уже описанным.

Для построения развертки было предложено следующее решение. Поскольку разверткой цилиндра является прямоугольник, то целесообразно использовать примитив plane, который позволит создать прямоугольный фрагмент плоскости необходимых размеров. Создается он с использованием тех же параметров высоты и радиуса, что и цилиндр, длина рассчитывается по радиусу цилиндра.

Далее следует отметить использование модификатора изгиба (bend()). Он применяется к плоскости, для того чтобы согнуть ее в цилиндрическую поверхность [4]. Для этого модификатору передаются определенные значения его параметров. Первый параметр – ось, относительно которой будет производиться изгиб (параметр axis, устанавливаем его равным 0, что соответствует оси Х), второй параметр – угол изгиба angle (приравниваем его 360, что даст полностью замкнутую цилиндрическую поверхность).

Чтобы осуществить незаметный для пользователя переход от цилиндра к изогнутой плоскости, осуществляем работу со свойством видимости этих объектов (указываем в свойствах объектов visibility = bezier_float() и задаем конкретное значение видимости, в нашем случае 0 и 1).

Таким образом, анимируя параметр угла изгиба плоскости создаем эффект разворачивания поверхности цилиндра на плоскость (рис 3).

Рисунок 3 – Применение модификатора bend()

Завершающим этапом моделирования является поворот развертки цилиндра и ее совмещение с горизонтальной плоскостью. Реализуется это двумя командами rotation и move. Для команды поворота указывается выбранная ось (x_rotation), для команды переноса – желаемые координаты


Моделирование построения развертки для поверхностей общего вида


При моделировании поверхностей общего вида (рис. 4) описанные выше способы моделирования не смогут дать удовлетворительного результата. Поэтому необходимо рассмотреть новый подход к решению задачи. Для начала определим, какие параметры моделирования могут быть интересны разработчику. Следует предположить, что единственный существенный параметр в поставленной задаче – путь, по которому будет изгибаться поверхность (направляющая). В таком случае, задание пути становится произвольным по форме и протяженности, что делает невозможным использование модификаторов изгиба или растяжения, так как они требуют указания точных параметров и границ действия.

Рисунок 4 – Произвольная коническая и цилиндрическая поверхности

Далее определим, каким именно образом будет создаваться путь. Самым простым и логичным способом является использования примитива line. С его помощью создается кривая линия, изгибы которой должна повторять плоскость.

В этом случае создание диалога с пользователем неоправданно, следует только указать направляющую. Оставшаяся часть работы должна быть автоматизирована.

Для создания произвольной цилиндрической поверхности воспользуемся примитивом plane. С его помощью создается плоскость определенной длины и ширины (в данном случае эти параметры не имеют существенного значения, поэтому назначаться они могут исходя только из требований наглядности и простоты понимания). Плоскости назначается определенное количество сегментов длины и только один сегмент ширины, это позволит имитировать ребра излома на поверхности, которые покажут конкретное положение образующих в определенных участках.

Далее к плоскости применяется модификатор smooth(), позволяющий убрать сглаживание на поверхности плоскости. Для этого полю autosmooth необходимо присвоить значение false.

Придание плоскости нужного изгиба производится с помощью пространственного модификатора PathDeform(WSM), который расположен во вкладке модификаторов, в разделе World Spase Modifier. Он вызывается командой MAXScript SpacePathDeform(). Особенностью этой группы модификаторов является то, что они всегда расположены в вершине стека модификаторов, поэтому все изменения поворота, переноса и т.д., даже сделанные по времени после применения модификатора из этой группы, могут существенно влиять на их работу, так как добавятся в стек на нижние уровни.

В качестве пути (параметр path) выбираем заданную пользователем кривую, выбираем ось изгиба (параметр axis, выбрана ось У).

В качестве результата имеем ломаную плоскость, изогнутую по заданному пути (рис 5).

Рисунок 5 – Результат работы SpacePathDeform()

Следующий этап – увеличение числа сегментов плоскости в режиме анимации, что создает эффект аппроксимации ломаной поверхности сглаженной.

Для создания эффекта развертывания и разглаживания поверхности анимируется параметр percent, контролирующий положение плоскости относительно пути. Его значение изменяется до -110%, создавая эффект разглаживания. На самом деле происходит перемещение плоскости по пути на -110%, т.е. плоскость уходит за границу действия модификатора (рис 6).

Рисунок 6 – Анимирование параметра percent

При таком сильном смещении модификация поворота и переноса не дает искажения, что позволяет совместить плоскость с горизонтальной плоскостью мировой системы координат.

Таким образом, получаем возможность автоматизированного построения развертки произвольной цилиндрической поверхности.

Визуализация происходит с помощью встроенной функции Render. Для настройки параметров визуализации вызывается окно диалога Render Scene [4].


Выводы


Моделирование процесса совмещения развертываемой поверхности с плоскостью является важной задачей, решение которой позволяет облегчить понимание общих принципов развертывания и поясняет условие развертываемости линейчатых поверхностей.

Использование встроенного языка пакета 3Ds Max MaxScript позволяет сделать модель более гибкой при использовании в обучающих целях, так как допускает изменение параметров модели. Это позволяет автоматизировать работу по созданию модели, создавать диалоговые конструкции для управления параметрами моделей. Такой подход существенно облегчает работу рядовых разработчиков, малознакомых с функциями 3Ds MAX.

Исследования могут быть продолжены в направлении разработки алгоритмов развертывания, позволяющих рассчитывать промежуточные состояния развертываемых поверхностей произвольного вида. Для реализации таких алгоритмов может оказаться целесообразным совместное использование AutoCAD и 3D Studio MAX.


Литература


  • Карабчевский В.В. Методы и средства разработки дистанционных учебников по начертательной геометрии // Новий колегіум, № 4’ 2007. Харків: ХНУРЕ. – 2007. – С. 31-37.
  • Карабчевский В.В., Бабкова А.А. Моделирование процессов решения задач начертательной геометрии // Наукові праці Донецького національного технічного університету. Серія «Інформатика, кібернетика і обчислювальна техніка». Вип. 8 (120). Донецьк: ДонНТУ. – 2007. – С. 126-132.
  • Мердок, Келли. 3ds max 9. Библия пользователя.: Пер. с англ. – М. : ООО «И.Д.Вильямс», 2007. – 1344с.
  • В.Верстак. 3ds max 7. Секреты мастерства. СПб.: Питер, 2005.-640 с.:ил.